package com.wanxi.service.Impl;

import com.wanxi.dao.Impl.NewsDaoImpl;
import com.wanxi.dao.NewsDao;
import com.wanxi.dto.ResultDTO;
import com.wanxi.model.News;
import com.wanxi.service.NewsService;
import com.wanxi.util.DelHTMLTag;
import com.wanxi.util.JSONCopy;
import com.wanxi.vo.NewsVO;

import java.util.Iterator;
import java.util.List;

public class NewsServiceImpl implements NewsService {
    NewsDao newsDao=new NewsDaoImpl();
    @Override
    public ResultDTO findAllNews() {
        List<News> list =newsDao.findAllNews();
        if(list.size()>0){
//            删除html标签
            list.forEach((e)->{
                e.setContent(DelHTMLTag.delHtmlTags(e.getContent()));
            });
            return ResultDTO.getDTO(list.size(),list);
        }
        return ResultDTO.builder().data(list).msg("no data").count(0).code(1).build();
    }

    @Override
    public ResultDTO findNewsById(NewsVO newsVO) {
        News news= JSONCopy.copy(newsVO,News.class);
        News n=newsDao.findNewsById(news);
        if(n!=null){
            return ResultDTO.getDTO(1,n);
        }
        return ResultDTO.builder().count(0).msg("error").code(1).build();
    }

    @Override
    public ResultDTO updateEnable(NewsVO newsVO) {
        News news= JSONCopy.copy(newsVO,News.class);
        int i=newsDao.updateEnable(news);
        if(i==1){
            return ResultDTO.getDTO(i,newsVO);
        }
        return ResultDTO.builder().data(newsVO).count(0).code(1).msg("error").build();
    }

    @Override
    public ResultDTO addNews(NewsVO newsVO) {
        News news= JSONCopy.copy(newsVO,News.class);
        if (news.getNewsType().getId()==0){
            news.getNewsType().setId(1);
        }
        int i=newsDao.addNews(news);
        if(i==1){
            return ResultDTO.getDTO(i,newsVO);
        }
        return ResultDTO.builder().data(newsVO).count(0).code(1).msg("error").build();
    }

    @Override
    public ResultDTO deleteNews(NewsVO newsVO) {
        News news= JSONCopy.copy(newsVO,News.class);
        int i=newsDao.deleteNews(news);
        if(i==1){
            return ResultDTO.getDTO(i,newsVO);
        }
        return ResultDTO.builder().data(newsVO).count(0).code(1).msg("error").build();
    }

    @Override
    public ResultDTO updateNews(NewsVO newsVO) {
        News news= JSONCopy.copy(newsVO,News.class);
        if (news.getNewsType().getId()==0){
            news.getNewsType().setId(1);
        }
        int i=newsDao.updateNews(news);
        if(i==1){
            return ResultDTO.getDTO(i,newsVO);
        }
        return ResultDTO.builder().data(newsVO).count(0).code(1).msg("error").build();
    }

    @Override
    public ResultDTO findNews(NewsVO newsVO) {
        News news=JSONCopy.copy(newsVO, News.class);

        List<News> list =newsDao.findNews(news);
        if(list.size()>0){
            Iterator<News> iterator=list.iterator();
            while (iterator.hasNext()){
                News n=iterator.next();
                if(n.getEnable()==0)
                    iterator.remove();
            }
//            删除html标签、限长度
            list.forEach((e)->{
                e.setContent(DelHTMLTag.delHtmlTags(e.getContent()));
                if(e.getContent().length()>15)
                    e.setContent(e.getContent().substring(0,14)+"...");
            });
            return ResultDTO.getDTO(list.size(),list);
        }
        return ResultDTO.builder().data(list).msg("no data").count(0).code(1).build();
    }

    @Override
    public ResultDTO findNewsBySome(NewsVO newsVO) {
        News news=JSONCopy.copy(newsVO, News.class);
        List<News> list =newsDao.findNewsBySome(news);
        if(list.size()>0){
//            删除html标签
            list.forEach((e)->{
                e.setContent(DelHTMLTag.delHtmlTags(e.getContent()));
            });
            return ResultDTO.getDTO(list.size(),list);
        }
        return ResultDTO.builder().data(list).msg("no data").count(0).code(1).build();
    }
}
